1. Technical Field
The subject invention relates generally to the field of computers and computer software and, more particularly, to program code conversion methods and apparatus useful, for example, in code translators, emulators and accelerators which translate program code that includes function calls.
2. Description of Related Art
In both embedded and non-embedded CPU's, one finds predominant Instruction Set Architectures (ISAs) for which large bodies of software exist that could be “accelerated” for performance, or “translated” to a myriad of capable processors that could present better cost/performance benefits, provided that they could transparently access the relevant software. One also finds dominant CPU architectures that are locked in time to their ISA, and cannot evolve in performance or market reach. Such architectures would benefit from “Synthetic CPU” co-architecture.
Program code conversion methods and apparatus facilitate such acceleration, translation and co-architecture capabilities and are addressed, for example, in the co-pending U.S. patent application Ser. No. 10/439,966, entitled Block Translation Optimizations for Program Code Conversion and filed on May 16, 2003, the disclosure of which is hereby incorporated by reference.
A subject program to be translated usually consists of multiple units of subject code, including the subject executable itself and a number of subject libraries, some of which may be proprietary and some of which are provided as part of the subject OS (“system libraries”). As the subject program runs, control flow passes between these different units of subject code as function calls are made to external libraries. In some circumstances, native (i.e., target architecture) versions of certain subject libraries may be available on the target architecture.